In order to be responsive to customer demand, telephone service providers require switching systems (switches) that can be updated to provide new services (features) without having to reload or rebuild the entire software package (generic) that controls call processing. Such generic rebuilding is a very long and costly procedure, especially in proportion to the cost of developing the new features themselves. Switch manufactures have responded by providing adjunct processors systems, which can be programmed to assist the switch to perform most of the call processing functions involved in one or more features, without having to change or add to the generic in the switch. Generally, feature software can be added to the adjunct without affecting other processes on the adjunct or call processing on the switch.
Feature processes in adjunct processors must themselves be updated periodically in order to provide enhanced services, to fix bugs, or to fine tune the process. Currently, such processes are updated by process replacement; that is, by terminating operation of an old process, replacing it with a new one and starting up the new process. Process replacement is required, for example, when the data structure on which the process operates needs to be changed, because no currently available update system permits the structure of data (the way that the data is stored by the process) to change without completely stopping operation of the process, removing it, and substituting another process which is capable of operating on the new data structure. While this is a much simpler method than a generic update, it cannot be done while the process is operating on calls without losing one or more calls and associated call data.
Field update is one method of changing certain operating software without stopping the operation of the process. In field update, operational software is modified by writing a segment of memory with a new program and "patching" the old program. The patch is executed by causing the old program to jump to the new program upon execution of a specific instruction and then jump back into the old program. Obviously, field update is useful only for certain changes and limited by the amount of free space for patches allocated when the original generic is built. Furthermore, the compiler that is used to build both the original program and the patches must have detailed knowledge of both the original program and the patch in order to generate the jump tables necessary to support this procedure. Most importantly, data storage structures cannot be changed by this procedure, because only programs can be changed by field update, not the data on which they operate.
Therefore, a problem in the art is that there is no way to add a feature to an operating switching system which requires changes of data storage structures without losing calls and call data.